package single;

/**
 * demo1 也是最常用的 饥汉创建方式
 * 直接在内部创建好了返回，线程安全的。
 * Class.forName("") 把类load到内存 静态属性会在被load到内存的时候初始化静态属性。
 *
 */
public class demo1 {
    public static void main(String args[]){
        SingleDemo1 singleDemo1 = SingleDemo1.getSingleInstance();

        int i = 0;
        while (i < 100){
            new Thread(()->{
                System.out.println(singleDemo1 == SingleDemo1.getSingleInstance());

            }).start();
            i++;
        }
    }
}

//class SingleDemo1{
//    private static final SingleDemo1 INSTANCE = new SingleDemo1();
//
//    public static SingleDemo1 getSingleInstance(){
//        return INSTANCE;
//    }
//    private SingleDemo1(){}
//}

class SingleDemo1{
    private static SingleDemo1 INSTANCE;
    static {
        INSTANCE = new SingleDemo1();
    }

    public static SingleDemo1 getSingleInstance(){
        return INSTANCE;
    }

    private SingleDemo1(){}
}